Bit rate control is important in video coding and related applications and is normally achieved by selecting an appropriate quantization matrix or quantizer to encode the picture. An 8×8 quantizer is an 8×8 matrix of integer valued step sizes that is used to divide video data in the form of 8×8 matrices of frequency coefficients produced by the discrete cosine transformation (DCT) of input video frames, and thereby reduce the amount of encoded video data. In the case of the digital video (DV) standard, as described in Specifications of Consumer-Use Digital VCRs using 6.3 mm magnetic tape, HD Digital VCR Conference, December 1994, the quantizer is determined by three numeric parameters known as area, class and quantization number. The area and class are integers between 0 and 3, inclusive. For a given pixel, the area number for that pixel is determined by the pixel's position in an 8×8 pixel block. A class number is assigned to each 8×8 pixel block on the basis of the block's content, for example, quantization noise and the maximum absolute value of the block's AC coefficients. The quantization number or step is an integer that specifies the degree of image quantization, and is assigned to a macroblock consisting of four luminance 8×8 pixel blocks and two chrominance 8×8 pixel blocks. The combination of the class and quantization number determines a quantization vector comprising four quantizer coefficients, one for each area number. An 8×8 quantizer is constructed from the quantization vector by entering each coefficient into corresponding positions in the quantizer, according to area number. The resulting quantizer determines the quantity of output video data generated from a given macroblock of input video data. A video segment, consisting of five macroblocks, is encoded within a constant bit budget by selecting a suitable quantization vector for each macroblock to provide a bit rate of the encoded video data is as close as possible to a constant target value.
U.S. Pat. No. 5,677,734, Method and Apparatus for Modifying the Quantization Step of each Macro-block in a Video Segment, describes a method of modifying the quantization step of each macroblock in a video segment. As shown in the accompanying FIG. 1, a video encoding system includes an activity detector 104 that detects the picture activity of each 8×8 pixel block and classifies the blocks by class number. Notwithstanding its name, a data estimation circuit 108 calculates the exact number of bits generated by the data in the segment memory 103 by quantization, run-length and Huffman coding, given a quantization number. A first quantization step decision circuit 106 determines a segment wide quantization number, and a second quantization step decision circuit 107 modifies the quantization number for each macroblock so that the quantity of quantized data is below a predetermined bit budget. A quantization circuit 105 quantizes the data with the resulting quantization number and a variable length coding (VLC) circuit 110 encodes the data by run-length and Huffman coding.
A paper by S. Rhee et al., A New Quantizer Selection Scheme for Digital VCR, IEEE Transactions on Consumer Electronics, Vol. 43, No. 3, August 1997, discloses a method of determining the quantization and class numbers to select a quantizer for each 8×8 pixel block. A modified quantizer map, QID, from a reduced set of quantization vectors was introduced. A segment-wide QID was first selected by calculating data quantity through quantization and variable length encoding. The selected QID was then mapped to the respective quantization and class numbers. The quantization vector for each 8×8 pixel block was fine-tuned by adjusting the class number according to the calculated data quantity.
A paper by W. Ding and B. Liu, Rate Control of MPEG Video Coding and Recording by Rate-Quantization Modeling, IEEE transactions on Circuits and Systems for Video Technology, Vol. 6, No. 1, February 1996, describes controlling the video bit rate by using a feedback re-encoding method with a rate-quantization model. This rate-quantization model was adapted with re-encoding results to choose a suitable reference quantization parameter for meeting a target bit rate.
The difficulty in controlling bit rate lies in how to choose the quantization parameters to meet a target bit rate budget. Prior art methods have attempted to solve this difficulty by trying out selected combinations of all possible quantization parameters. However, these methods require complex hardware and/or significant computational overheads. They require a multi-pass implementation of the processes of quantization and variable length encoding.
Even rate-quantization modeling is dependent on either re-encoding or training sequences and classification schemes. The former has the disadvantage of local adaptation with quantization parameter and the requirement of two to three-pass encoding, while the latter is impractical for real-time video transmission and quality control. In addition, the rate-quantization model has only been used on a frame-basis. There may be a model mismatch for finer bit estimation due to the fast changing nature of the rate-quantization model at low bit rates.
It is desired, therefore, to provide a method for use in encoding video data, a video encoding module and a video encoder that alleviate one or more of the above difficulties, or at least a useful alternative to existing methods, modules and encoders.